package com.lsy.on_line.zaixian.utils;


import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * 缓存工具类
 */
@Component
public class BaseCache {

    /**
     * 初始10分钟，过期时间10分钟
     */
    private Cache<String,Object> tenMinuteCache = CacheBuilder.newBuilder()
            .initialCapacity(10)//设置初始值,为方便版本迭代 最好合理设置
            .maximumSize(100)//设置最大值,根据运行环境和设备性能作相应调整
            .concurrencyLevel(5)//设置并发数
            .expireAfterWrite(600,TimeUnit.SECONDS)//过期时间 写入后10分钟过期
            .recordStats()//统计缓存命中率
            .build();//开始构建

    /**
     * 初始10分钟，过期时间一小时
     */
    private Cache<String,Object> oneHourCache = CacheBuilder.newBuilder()
            .initialCapacity(10)//设置初始值,为方便版本迭代 最好合理设置
            .maximumSize(100)//设置最大值,根据运行环境和设备性能作相应调整
            .concurrencyLevel(5)//设置并发数
            .expireAfterWrite(3600,TimeUnit.SECONDS)//过期时间 写入后一小时过期
            .recordStats()//统计缓存命中率
            .build();//开始构建

    public Cache<String, Object> getTenMinuteCache() {
        return tenMinuteCache;
    }
    public void setTenMinuteCache(Cache<String, Object> tenMinuteCache) {
        this.tenMinuteCache = tenMinuteCache;
    }

    public Cache<String, Object> getOneHourCache() {
        return oneHourCache;
    }

    public void setOneHourCache(Cache<String, Object> oneHourCache) {
        this.oneHourCache = oneHourCache;
    }
}
